package client;
// This file contains material supporting section 3.7 of the textbook:
// "Object Oriented Software Engineering" and is issued under the open-source
// license found at www.lloseng.com 

import gui.MainPanel;


import java.io.*;

import javax.swing.JFrame;

import client.*;
import common.*;


/**
 * This class constructs the UI for a chat client.  It implements the
 * chat interface in order to activate the display() method.
 * Warning: Some of the code here is cloned in ServerConsole 
 *
 * @author Fran&ccedil;ois B&eacute;langer
 * @author Dr Timothy C. Lethbridge  
 * @author Dr Robert Lagani&egrave;re
 * @version July 2000
 */




public class Client implements Display
{
  //Class variables *************************************************	
	public static MainPanel aFrame = new MainPanel();
	public static Object temp=null;
	static String host;
	public static int compid=1;
	 
  /**
   * The default port to connect on.
   */
  final public static int DEFAULT_PORT = 5555;
  
  //Instance variables **********************************************
  
  /**
   * The instance of the client that created this ConsoleChat.
   */
  public Clientfunc clientf;

  
  //Constructors ****************************************************

  /**
   * Constructs an instance of the ClientConsole UI.
   *
   * @param host The host to connect to.
   * @param port The port to connect on.
   */
  public Client(String host, int port) 
  {
    try 
    {
      clientf= new client.Clientfunc(host, port, this);
    } 
    catch(IOException exception) 
    {
      System.out.println("Error: Can't setup connection!"
                + " Terminating client.");
      System.exit(1);
    }
  }

  
  //Instance methods ************************************************
  
  /**
   * This method waits for input from the console.  Once it is 
   * received, it sends it to the client's message handler.
   */
  public void accept(Object message) 
  {
	  this.temp=null;
        clientf.handleMessageFromClientUI(message);

  }

  /**
   * This method overrides the method in the ChatIF interface.  It
   * displays a message onto the screen.
   *
   * @param message The string to be displayed.
   */
  public void display(Object message) 
  {    
	//  if (!(message instanceof Integer))
		//	 System.out.println("> " + message.toString());
		 temp=message;   
  }

  public Object getMsg()
  {	  
	  while(this.temp==null);
	  return (this.temp);
  }
  
  
  //Class methods ***************************************************
  
  /**
   * This method is responsible for the creation of the Client UI.
   *
   * @param args[0] The host to connect to.
   */
  public static void main(String[] args) 
  {
    
	  host = "";
	    int port = 0;  //The port number
	    try
	    {
	      host = args[0];//"192.168.1.196";
	    }
	    catch(ArrayIndexOutOfBoundsException e)
	    {
	      host = "localhost";
	    } 
    	
    aFrame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    aFrame.setSize( 1000,720 ); // set frame size
    aFrame.setResizable(true);
    aFrame.setVisible( true ); // display frame
    

  }


}
//End of ConsoleChat class
